package org.liukai.tutorial.dao;

import java.util.List;

import org.liukai.tutorial.domain.Authority;
import org.liukai.tutorial.domain.Role;
import org.liukai.tutorial.domain.User;

public interface IAccountDao {

	/**
	 * 根据loginName获得User信息
	 */
	public User getUserByLoginName(String loginName);

	/**
	 * 根据userName获得对应的Role信息
	 */
	public List<Role> getRoleByUserName(String userName);

	/**
	 * 根据roleId获得对应的权限ID
	 */
	public List<Authority> getAuthorityByRole(Integer roleId);

	/**
	 * 获得所有的User
	 */
	public List<User> getAllUser();

	/**
	 * 根据ID获得User
	 */
	public User getUserById(Integer id);

	/**
	 * 根据UserId删除User
	 */
	public int deleteUser(Integer id);

	/**
	 * 根据UserID删除和UserID关联的Role
	 */
	public int deleteUserRoleByUserId(Integer id);

	/**
	 * 根据RoleID删除和UserID相关的.
	 */
	public int deleteRoleUserByRoleId(Integer id);

	/**
	 * 创建一个User
	 */
	public int addUser(User user);

	/**
	 * 根据UserId添加RoleId
	 */
	public int[] addUserRole(Integer userId, Integer[] roleMenus);

	/**
	 * 更新User
	 */
	public int updateUser(User user);

	// ========================= role

	/**
	 * 获得所有的Role
	 */
	public List<Role> getAllRole();

	/**
	 * 根据ID获得Role
	 */
	public Role getRoleById(Integer id);

	/**
	 * 新增Role
	 */
	public int addRole(Role role);

	/**
	 * 根据RoleId删除Role
	 */
	public int deleteRole(Integer id);

	/**
	 * 根据RoleId添加autho_id
	 */
	public int[] addRoleAuthority(Integer id, Integer[] authMenus);

	/**
	 * 根据RoleID删除authId
	 */
	public int deleteRoleAuthority(Integer id);

	/**
	 * 更新Role
	 */
	public int updateRole(Role role);

	// ================ authority

	/**
	 * 获得所有的Authority列表
	 */
	public List<Authority> getAllAuthority();
}
